/**
 * 把扁平结构的数据, 转成树形控件
 * @param {*} list
 * @param {*} rootValue
 * @returns
 */
// 该方法详情,求看请外层目录 treeData 的执行思路
// 1. pid：父级部门 id
//    - 如果为空，说明是 1 级
//    - 如果不为空，pid 代表的是父级的 id，
// 2. `pid 代表的是父级的 id`，那是否可以使用 id 和 pid  形成嵌套关系呢？
//    - 可以
//    子的pid 一定 会和父的id相同,但是子的id不和父相同

// rootValue 第一次为 '' 这样可以先筛选出父级,第二次后递归是 item.id 寻找子级
export function transTree(list, rootValue) { // list: 整个数组, rootValue本次要查找的目标id -> 此函数为了找到rootValue目标id的下属们
  const treeData = [] // 装下属对象的
  list.forEach(item => {
    if (item.pid === rootValue) { // 当前对象pid符合, 继续递归调用查找它的下属,这里为拿到一级的
      const children = transTree(list, item.id) // 返回item对象下属数组,这里为拿到二级的
      if (children.length) {
        item.children = children // 为当前父item添加children属性保存下属数组(动态添加字段)
      }
      treeData.push(item) // 把当前对象保存到数组里, 继续遍历
      // console.log(treeData,'treeData')
    }
  })
  return treeData // 遍历结束, rootValue的id对应下属们收集成功, 返回给上一次递归调用children, 加到父级对象的children属性下
}
